/**
 * 
 */
package cn.bblocks.cacheTest.configuration;

import java.nio.charset.Charset;
import java.util.Iterator;
import java.util.List;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.client.ClientHttpRequestFactory;
import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
import org.springframework.http.client.SimpleClientHttpRequestFactory;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.http.converter.StringHttpMessageConverter;
import org.springframework.web.client.RestTemplate;

/** 
* @version:v1.0
* @Description: RestTemplate配置模板
* @author: jzhao
* @date: 2019年8月3日上午10:51:38
*/
@Configuration
public class RestTemplateConfig {
	
	 	@Bean
	    public RestTemplate restTemplate(ClientHttpRequestFactory factory) {
	        //return new RestTemplate(factory);
	 		
	 		RestTemplate restTemplate = new RestTemplate(factory);
	        // 使用 utf-8 编码集的 conver 替换默认的 conver（默认的 string conver 的编码集为"ISO-8859-1"）
	        List<HttpMessageConverter<?>> messageConverters = restTemplate.getMessageConverters();
	        Iterator<HttpMessageConverter<?>> iterator = messageConverters.iterator();
	        while (iterator.hasNext()) {
	            HttpMessageConverter<?> converter = iterator.next();
	            if (converter instanceof StringHttpMessageConverter) {
	                iterator.remove();
	            }
	        }
	        messageConverters.add(new StringHttpMessageConverter(Charset.forName("UTF-8")));
	        
	       // restTemplate.setErrorHandler(new CustomResponseErrorHandler());
	        
	        
	        return restTemplate;
	    }
	 
//	    @Bean("urlConnection")
//	    public ClientHttpRequestFactory simpleClientHttpRequestFactory() {
//	        SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory();
//	        factory.setReadTimeout(10000);//单位为ms
//	        factory.setConnectTimeout(5000);//单位为ms
//	        return factory;
//	    }
	    
	    @Bean("httpClient")
	    public ClientHttpRequestFactory httpClientFactory() {
	    	HttpComponentsClientHttpRequestFactory factory = new HttpComponentsClientHttpRequestFactory();
	        factory.setReadTimeout(10000);//单位为ms
	        factory.setConnectTimeout(5000);//单位为ms
	        return factory;
	    }
	
	    
}
